N-그램(N-gram)은어처리(Natural Language Processing, NLP) 분야에서 언어 모델(Language Modeling)에리 사용되는 기초적인 통계적 기법이다. N-램은 연속 N개의 아이템(item)으로 구성된 부분열을 의미하며, 언어 처리에서는 주로 연속된 N개 단어(word) 또는 음소(phoneme), 문자(character) 등을 말한다. 예를 들어, 문장에서 연속된 2개의 단어로 구성된 것을 바이그램(bigram), 3개의 단어는 트라이그램(trigram)이라고 한다.
N-그램 모델은 주어진 단어 시퀀스가 얼마나 자연스러운지를 확률적으로 평가하는 데 사용되며, 기계 번역, 음성 인식, 텍스트 생성, 스펠링 교정 등 다양한 응용 분야에서 활용된다. 단순하면서도 효과적인 특성 덕분에, 딥러닝 기반의 고급 언어 모델이 등장하기 이전까지는 N-그램이 언어 모델링의 핵심 기법이었다.
N-그램의 정의와 종류
정의
N-그램은 길이가 N인 연속된 기호(sequence)의 조각이다. 자연어처리에서는 이 기호가 일반적으로 단어 또는 문자 단위로 나뉜다. 수학적으로, 문장 ( W = w_1, w_2, ..., w_T )에서 N-그램은 다음과 같이 정의된다:
[
\text{N-그램} = (w_i, w_{i+1}, ..., w_{i+N-1})
]
예를 들어, 문장 "나는 학생입니다"에서:
- 유니그램(Unigram, N=1): "나는", "학생입니다"
- 바이그램(Bigram, N=2): "나는 학생입니다"
- 트라이그램(Trigram, N=3): "나는 학생입니다" (이 문장은 단어 2개이므로 트라이그램은 존재하지 않음)
주요 종류
N |
이름 |
설명 |
1 |
유니그램 (Unigram) |
단어 하나만 고려. 각 단어의 등장 확률을 독립적으로 계산 |
2 |
바이그램 (Bigram) |
현재 단어가 바로 이전 단어에 의존한다고 가정 |
3 |
트라이그램 (Trigram) |
현재 단어가 이전 두 단어에 의존한다고 가정 |
N |
N-그램 |
일반화된 형태. 현재 단어가 이전 N-1개 단어에 의존 |
언어 모델링에서의 활용
N-그램 모델은 마르코프 가정(Markov Assumption)을 기반으로 한다. 즉, 어떤 단어의 등장 확률은 이전의 N-1개 단어에만 의존한다는 가정이다. 예를 들어, 트라이그램 모델에서는 다음과 같은 조건부 확률을 계산한다:
[
P(w_t | w_{t-2}, w_{t-1}) \approx \frac{C(w_{t-2}, w_{t-1}, w_t)}{C(w_{t-2}, w_{t-1})}
]
여기서 ( C(\cdot) )는 특정 N-그램의 등장 횟수를 의미한다.
전체 문장의 확률은 각 단어의 조건부 확률의 곱으로 계산된다:
[
P(W) = \prod_{t=1}^{T} P(w_t | w_{t-N+1}, ..., w_{t-1})
]
예시
문장: "고양이가 밥을 먹는다"
바이그램 모델 기준 확률:
[
P(\text{고양이가 밥을 먹는다}) = P(\text{고양이가}) \times P(\text{밥을}|\text{고양이가}) \times P(\text{먹는다}|\text{밥을})
]
장점과 단점
장점
- 단순하고 계산이 빠름: 조건부 확률을 빈도 기반으로 추정하므로 구현이 간단하고 실시간 처리에 적합.
- 적은 데이터로도 활용 가능: 대규모 코퍼스 없이도 기본적인 언어 패턴을 학습할 수 있음.
- 해석이 용이: 어떤 N-그램이 자주 등장하는지 직접 확인 가능.
단점
- 희소성 문제(Sparsity): 특정 N-그램 조합이 훈련 데이터에 등장하지 않으면 확률이 0이 되어 일반화 어려움.
- 길이 제한: 장거리 의존성(long-range dependency)을 포착하지 못함. 예: 문장 초반과 말미의 단어 관계 무시.
- 저장 공간 문제: N이 커질수록 가능한 N-그램의 수가 기하급수적으로 증가 → 메모리 소모 큼.
희소성 문제를 해결하기 위해 다양한 스무딩 기법이 사용된다. 대표적인 방법은 다음과 같다:
- 라플라스 스무딩(Laplace/Lidstone Smoothing): 모든 N-그램에 작은 상수를 더하여 0 확률 방지.
- 굿-튜링 스무딩(Good-Turing Smoothing): 관측된 빈도를 기반으로 미관측 항목의 확률을 추정.
- 백오프(Backoff): 현재 N-그램이 없으면 (N-1)-그램으로 되돌아가 확률 계산.
- 보간(Interpolation): 여러 차수의 N-그램 확률을 가중 평균.
N-그램은 단어 외에도 문자 단위로도 사용된다. 이는 스펠링 교정, 언어 감지, 이름 인식 등에 유용하다. 예를 들어, 단어 "한국어"의 문자 기반 트라이그램은:
- "한", "한국", "한국어", "국어", "어"
문자 기반 N-그램은 언어의 음운적 구조를 반영할 수 있어, 오타 감지나 음성 인식의 전처리 단계에서 유용하다.
관련 기술 및 발전
N-그램 모델은 딥러닝 기반의 순환 신경망(RNN), LSTM, 트랜스포머(Transformer) 모델 등에 의해 점차 대체되고 있다. 특히, BERT, GPT와 같은 사전 학습 언어 모델은 장거리 의존성과 문맥을 훨씬 더 정교하게 처리할 수 있어, N-그램의 한계를 극복한다.
그럼에도 불구하고, N-그램은 다음과 같은 경우 여전히 유용하다:
- 실시간 응답이 필요한 경량 시스템
- 학습 데이터가 제한된 도메인
- 간단한 텍스트 분류 또는 자동 완성 기능
참고 자료
- Jurafsky, D., & Martin, J. H. (2023). Speech and Language Processing (3rd ed.).
- Manning, C. D., & Schütze, H. (1999). Foundations of Statistical Natural Language Processing.
- Wikipedia: N-gram
- Stanford NLP Group: Language Modeling with N-grams
N-그램은 자연어처리의 기초이자 역사적인 이정표로, 현대 언어 모델의 발전을 이해하는 데 필수적인 개념이다.
# N-그램## 개요
**N-그램**(N-gram)은어처리(Natural Language Processing, NLP) 분야에서 언어 모델(Language Modeling)에리 사용되는 기초적인 통계적 기법이다. N-램은 연속 N개의 아이템(item)으로 구성된 부분열을 의미하며, 언어 처리에서는 주로 연속된 N개 단어(word) 또는 음소(phoneme), 문자(character) 등을 말한다. 예를 들어, 문장에서 연속된 2개의 단어로 구성된 것을 **바이그램**(bigram), 3개의 단어는 **트라이그램**(trigram)이라고 한다.
N-그램 모델은 주어진 단어 시퀀스가 얼마나 자연스러운지를 확률적으로 평가하는 데 사용되며, 기계 번역, 음성 인식, 텍스트 생성, 스펠링 교정 등 다양한 응용 분야에서 활용된다. 단순하면서도 효과적인 특성 덕분에, 딥러닝 기반의 고급 언어 모델이 등장하기 이전까지는 N-그램이 언어 모델링의 핵심 기법이었다.
---
## N-그램의 정의와 종류
### 정의
N-그램은 길이가 N인 연속된 기호(sequence)의 조각이다. 자연어처리에서는 이 기호가 일반적으로 단어 또는 문자 단위로 나뉜다. 수학적으로, 문장 \( W = w_1, w_2, ..., w_T \)에서 N-그램은 다음과 같이 정의된다:
\[
\text{N-그램} = (w_i, w_{i+1}, ..., w_{i+N-1})
\]
예를 들어, 문장 "나는 학생입니다"에서:
- **유니그램**(Unigram, N=1): "나는", "학생입니다"
- **바이그램**(Bigram, N=2): "나는 학생입니다"
- **트라이그램**(Trigram, N=3): "나는 학생입니다" (이 문장은 단어 2개이므로 트라이그램은 존재하지 않음)
### 주요 종류
| N | 이름 | 설명 |
|---|------|------|
| 1 | 유니그램 (Unigram) | 단어 하나만 고려. 각 단어의 등장 확률을 독립적으로 계산 |
| 2 | 바이그램 (Bigram) | 현재 단어가 바로 이전 단어에 의존한다고 가정 |
| 3 | 트라이그램 (Trigram) | 현재 단어가 이전 두 단어에 의존한다고 가정 |
| N | N-그램 | 일반화된 형태. 현재 단어가 이전 N-1개 단어에 의존 |
---
## 언어 모델링에서의 활용
### 조건부 확률 기반
N-그램 모델은 **마르코프 가정**(Markov Assumption)을 기반으로 한다. 즉, 어떤 단어의 등장 확률은 이전의 N-1개 단어에만 의존한다는 가정이다. 예를 들어, 트라이그램 모델에서는 다음과 같은 조건부 확률을 계산한다:
\[
P(w_t | w_{t-2}, w_{t-1}) \approx \frac{C(w_{t-2}, w_{t-1}, w_t)}{C(w_{t-2}, w_{t-1})}
\]
여기서 \( C(\cdot) \)는 특정 N-그램의 등장 횟수를 의미한다.
전체 문장의 확률은 각 단어의 조건부 확률의 곱으로 계산된다:
\[
P(W) = \prod_{t=1}^{T} P(w_t | w_{t-N+1}, ..., w_{t-1})
\]
### 예시
문장: "고양이가 밥을 먹는다"
바이그램 모델 기준 확률:
\[
P(\text{고양이가 밥을 먹는다}) = P(\text{고양이가}) \times P(\text{밥을}|\text{고양이가}) \times P(\text{먹는다}|\text{밥을})
\]
---
## 장점과 단점
### 장점
- **단순하고 계산이 빠름**: 조건부 확률을 빈도 기반으로 추정하므로 구현이 간단하고 실시간 처리에 적합.
- **적은 데이터로도 활용 가능**: 대규모 코퍼스 없이도 기본적인 언어 패턴을 학습할 수 있음.
- **해석이 용이**: 어떤 N-그램이 자주 등장하는지 직접 확인 가능.
### 단점
- **희소성 문제**(Sparsity): 특정 N-그램 조합이 훈련 데이터에 등장하지 않으면 확률이 0이 되어 일반화 어려움.
- **길이 제한**: 장거리 의존성(long-range dependency)을 포착하지 못함. 예: 문장 초반과 말미의 단어 관계 무시.
- **저장 공간 문제**: N이 커질수록 가능한 N-그램의 수가 기하급수적으로 증가 → 메모리 소모 큼.
---
## 스무딩 기법 (Smoothing)
희소성 문제를 해결하기 위해 다양한 **스무딩 기법**이 사용된다. 대표적인 방법은 다음과 같다:
- **라플라스 스무딩**(Laplace/Lidstone Smoothing): 모든 N-그램에 작은 상수를 더하여 0 확률 방지.
- **굿-튜링 스무딩**(Good-Turing Smoothing): 관측된 빈도를 기반으로 미관측 항목의 확률을 추정.
- **백오프**(Backoff): 현재 N-그램이 없으면 (N-1)-그램으로 되돌아가 확률 계산.
- **보간**(Interpolation): 여러 차수의 N-그램 확률을 가중 평균.
---
## 문자 기반 N-그램
N-그램은 단어 외에도 **문자 단위**로도 사용된다. 이는 스펠링 교정, 언어 감지, 이름 인식 등에 유용하다. 예를 들어, 단어 "한국어"의 문자 기반 트라이그램은:
- "한", "한국", "한국어", "국어", "어"
문자 기반 N-그램은 언어의 음운적 구조를 반영할 수 있어, 오타 감지나 음성 인식의 전처리 단계에서 유용하다.
---
## 관련 기술 및 발전
N-그램 모델은 딥러닝 기반의 **순환 신경망**(RNN), **LSTM**, **트랜스포머**(Transformer) 모델 등에 의해 점차 대체되고 있다. 특히, **BERT**, **GPT**와 같은 사전 학습 언어 모델은 장거리 의존성과 문맥을 훨씬 더 정교하게 처리할 수 있어, N-그램의 한계를 극복한다.
그럼에도 불구하고, N-그램은 다음과 같은 경우 여전히 유용하다:
- 실시간 응답이 필요한 경량 시스템
- 학습 데이터가 제한된 도메인
- 간단한 텍스트 분류 또는 자동 완성 기능
---
## 참고 자료
- Jurafsky, D., & Martin, J. H. (2023). *Speech and Language Processing* (3rd ed.).
- Manning, C. D., & Schütze, H. (1999). *Foundations of Statistical Natural Language Processing*.
- Wikipedia: [N-gram](https://en.wikipedia.org/wiki/N-gram)
- Stanford NLP Group: [Language Modeling with N-grams](https://web.stanford.edu/class/cs124/lec/languagemodeling.pdf)
N-그램은 자연어처리의 기초이자 역사적인 이정표로, 현대 언어 모델의 발전을 이해하는 데 필수적인 개념이다.